 //*************************************************************************************
 //   Account.java             Author:20172323wyh
 //
 //   Represents a bank account with basic services such as deposit and withdraw.
 //*************************************************************************************
 
 import java.text.NumberFormat;

 public class Account
 {  
    public static void main(String[] args)
    {}

    private final double RATE = 0.035;  // interest rate of 3.5%

    private long acctNumber;
    private double balance;
    private String name;

    //------------------------------------------------------------------------
    // Sets up the account by defining its owner, account number,
    // and initial balance.
    //------------------------------------------------------------------------
    public Account(String owner, long account)
    {
       name = owner;
       acctNumber = account;
       balance = 0;
    }

    //-------------------------------------------------------------------------
    //  Deposits the specified amount into the account. Returns the new balance
    //-------------------------------------------------------------------------
    public double deposit(double amount)
    {
       balance = balance + amount;
       return balance;
    }

    //-------------------------------------------------------------------------
    // Withdraw the specified amounts from the account and apllies
    // the fee. Returns the new balance.
    //-------------------------------------------------------------------------
    public double withdraw(double amount, double fee)
    {
       balance = balance - amount - fee;
       
       return balance;
    }

    //-------------------------------------------------------------------------
    //  Adds interest to the account and returns the new balance.
    //-------------------------------------------------------------------------
    public double addInterest()
    {
       balance += (balance * RATE);
       return balance;
    }
  
    //-------------------------------------------------------------------------
    //  Returns the current balance of the account.
    //-------------------------------------------------------------------------
    public double getBalance()
    {
       return balance;
    }
   
    //-------------------------------------------------------------------------
    // Returns a one-line description of the account as a string.
    //-------------------------------------------------------------------------
    public String toString()
    {
       NumberFormat fmt = NumberFormat.getCurrencyInstance();
       return acctNumber + "\t" + name + "\t" + fmt.format(balance);
    }
 }
